package io.plus.engine.pulse;

import lombok.Data;
import tool.plus.Clock;

import java.util.concurrent.atomic.AtomicInteger;

@Data
public class AsynchronousSocketChannelState implements java.io.Serializable {
    private static final long serialVersionUID = -6942731710053482089L;


    /**
     * 第一次连接成功的时间
     */
    public Long timeFirstConnected = null;
    /**
     * 连接关闭的时间
     */
    public long closedTime = Clock.currentTimeMillis;
    /**
     * 进入重连队列时间
     */
    public long timeInReconnQueue = Clock.currentTimeMillis;
    /**
     * 心跳超时次数
     */
    public AtomicInteger heartbeatTimeoutCount = new AtomicInteger();
//
    /**
     * 本次解码失败的次数
     */
    public int decodeFailCount = 0;
    /**
     * 最近一次收到业务消息包的时间(一个完整的业务消息包，一部分消息不算)
     */
    public long latestTimeOfReceivedPacket = Clock.currentTimeMillis;
    /**
     * 最近一次发送业务消息包的时间(一个完整的业务消息包，一部分消息不算)
     */
    public long latestTimeOfSentPacket = Clock.currentTimeMillis;
    /**
     * 最近一次收到业务消息包的时间:收到字节就算
     */
    public long latestTimeOfReceivedByte = Clock.currentTimeMillis;
    /**
     * 最近一次发送业务消息包的时间：发送字节就算
     */
    public long latestTimeOfSentByte = Clock.currentTimeMillis;

}
